package com.jimmy.reggie.common;


/**
 * 基于ThreadLocal封装的工具类，用户保存或者获取当前线程内用户的id
 * 为什么要这个Threadlocal？
 * 在用户登陆时，将用户的id已经已 "employee”-emloyee.id
 * 这样的形式存储在了session中
 * 我们在使用mybatisPlus动态存储公共字段的时候，没有办法从session中取出相应的键值对及进行填充
 *
 * Update操作线程流程：
 *   update---LoginCheckFilter--Controlloer--Service--MetaObjectHandler
 *
 * 所以我们需要在用户登录时，将同样的值放在threadlocal中，也就是在当前线程中，我们可以通过Threadlocal访问对应的值
 * 从而达到动态获取用户id的效果
 */
public class BaseContext {
     private static volatile ThreadLocal<Long> threadLocal=new ThreadLocal<>();
    /**
     * 设置值
     */
    public static  void setCurrentId(Long id){
        threadLocal.set(id);
    }
    /**
     * 获取值
     */
     public static Long getCurrentID(){
         return threadLocal.get();
    }
}
